package lock8;

import java.util.concurrent.TimeUnit;

/**
 * 8 锁,关于锁的8个问题
 * 1. 在正常情况下  执行 A然后延迟1秒执行B 是先发短信还是先打电话。   先发短信再打电话
 * 2. 在发送短信代码中延迟4秒 执行 是先发短信还是先打电话     先发短信再打电话           todo 原因因为同一调用者 phone是一个调用者  方法他们的锁是一样的  所以当phone.sendMs()就已经执行方法锁了 需要等待执行完成后才会释放锁
 */

public class Test1 {

    public static void main(String[] args) {
        phone phone = new phone();
        new Thread(()->{
            phone.sendMs();
        },"A").start();

        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        new Thread(()->{
            phone.call();
        },"B").start();
    }



}
//class phone{
//
//
//    public synchronized void sendMs(){
//        try {
//            TimeUnit.SECONDS.sleep(4);
//        } catch (InterruptedException e) {
//            throw new RuntimeException(e);
//        }
//        System.out.println("发送短信 ！！！");
//    }
//
//
//    public synchronized void call(){
//        System.out.println("打电话 !!!");
//    }
//}
